/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DataAccessObject;

import BusinessEntity.BE_Sistema;
import Comun.Conexion;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author richard.saldana
 */
public class DA_Sistema {
    Conexion con;
    ResultSet rs;
    CallableStatement declaracion;

    private static DA_Sistema pinstancia=null;

    public static DA_Sistema obtenerInstancia()
    {
      if (pinstancia==null)
      {
          pinstancia=new DA_Sistema();
      }
      return pinstancia;
    }
    
         public ArrayList<BE_Sistema> obtenerSistemas() throws InstantiationException, IllegalAccessException, SQLException{

        con = Conexion.ObtenerInstancia();
        ArrayList<BE_Sistema> aobjBE_sistemas = new ArrayList<BE_Sistema>();

        try {
            con.IniciarConexion();
            String strProcedure = "{call obtenerSistemas() }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.execute();
            rs = declaracion.getResultSet();   
            
            while(rs.next()){
                BE_Sistema objBE_Sistema = new BE_Sistema();
                objBE_Sistema.setIdSistema(rs.getInt("idSistema"));
                objBE_Sistema.setStrNombre(rs.getString("nombre"));
                objBE_Sistema.setStrDescripcion(rs.getString("descripcion"));
                aobjBE_sistemas.add(objBE_Sistema);
                
            }

   
        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            
            con.CerrarConexion();
 
            
        }
        
        return aobjBE_sistemas;
      
}
         
       public ArrayList<BE_Sistema> obtenerSubSistemas(int intCodigoSistema) throws InstantiationException, IllegalAccessException, SQLException{

        con = Conexion.ObtenerInstancia();
        ArrayList<BE_Sistema> aobjBE_Subsistemas = new ArrayList<BE_Sistema>();

        try {
            con.IniciarConexion();
            String strProcedure = "{call obtenerSubsistemas(?) }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.setInt(1, intCodigoSistema);
            declaracion.execute();
            rs = declaracion.getResultSet();   
            
            while(rs.next()){
                BE_Sistema objBE_Subsistema = new BE_Sistema();
                objBE_Subsistema.setIdSistema(rs.getInt("idSistema"));
                objBE_Subsistema.setStrNombre(rs.getString("nombre"));
                objBE_Subsistema.setStrDescripcion(rs.getString("descripcion"));
                BE_Sistema objBE_Sistema = new BE_Sistema();
                objBE_Sistema.setIdSistema(rs.getInt("idSistema"));
                objBE_Subsistema.setObjSubsistema(objBE_Sistema);
                
                aobjBE_Subsistemas.add(objBE_Subsistema);
                
            }

   
        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            
            con.CerrarConexion();
 
            
        }
        
        return aobjBE_Subsistemas;
      
}
    
}
